//
//  UIScrollViewDelegate.swift
//  Documentation
//
//  Created by Toj on 11/18/22.
//

import Foundation

/** 改变 offset调用: 缩放, 拖拽都会改变offset */
optional func scrollViewDidScroll(_ scrollView: UIScrollView)

/** 缩放进行中调用 */
optional func scrollViewDidZoom(_ scrollView: UIScrollView)

/** 开始拖拽调用 */
optional func scrollViewWillBeginDragging(_ scrollView: UIScrollView)

/** 即将结束拖拽调用 */
optional func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)

/** 结束拖拽调用 decelerate: 是否在减速*/
optional func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)

/** 开始降速调用 */
optional func scrollViewWillBeginDecelerating(_ scrollView: UIScrollView)

/** 拖拽动画即将停止调用 */
optional func scrollViewDidEndDecelerating(_ scrollView: UIScrollView)

/** 当用代码设置scrollRectToVisible/ setContentOffset 时候调用 (注意 后面的animated 一定要传true, 否则不会触发)*/
optional func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView)

/** 设置缩放的View, 初始化完之后调用此方法告诉scrollView 谁可以缩放操作, 然后进行布局 */
optional func viewForZooming(in scrollView: UIScrollView) -> UIView?

/** 缩放开始调用 */
optional func scrollViewWillBeginZooming(_ scrollView: UIScrollView, with view: UIView?)

/** 缩放结束调用 */
optional func scrollViewDidEndZooming(_ scrollView: UIScrollView, with view: UIView?, atScale scale: CGFloat)

/// 当点击(collectionView/ tableView y值滚动到某个位置)状态栏时候调用
/// 是否滚动到最上面
optional func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool

/** 点击状态栏回到顶部调用 */
optional func scrollViewDidScrollToTop(_ scrollView: UIScrollView)

/* Also see -[UIScrollView adjustedContentInsetDidChange]
 */
@available(iOS 11.0, *)
optional func scrollViewDidChangeAdjustedContentInset(_ scrollView: UIScrollView)
